const Router = require('koa-router')
let router = new Router()
const mongoose = require('mongoose')

router.get('/', async (ctx) => {
  ctx.body = '用户操作首页'
})
// 注册功能
router.post('/register', async (ctx) => {
  // ctx.body = ctx.request.body
  // 取得model
  const User = mongoose.model('User')
  //把从前端接收的POST数据封装成一个新的user对象
  let newUser = new User(ctx.request.body)
  //用mongoose的save方法直接存储，然后判断是否成功，返回相应的结果
  await newUser.save().then(() => {
    //成功返回code=200，并返回成功信息
    ctx.body = {
      code: 200,
      message: '注册成功'
    }
  }).catch(error => {
    //失败返回code=500，并返回错误信息
    ctx.body = {
      code: 500,
      message: error
    }
  })
})

// 登录
router.post('/login', async (ctx) => {
  // 获取传递过来的登录信息
  const loginUser = ctx.request.body
  let userName = loginUser.userName
  let password = loginUser.passWord
  // 引入User的model
  const User = mongoose.model('User')
  //查找用户名是否存在，如果存在开始比对密码
  await User.findOne({
    username: userName,
    password: password
  }).exec().then(async (result) => {
    if (result) {
      //当用户名存在时，开始比对密码
      let newUser = new User()
      await newUser.comparePassword(password, result.password).then((isMatch) => {
        //返回比对结果
        ctx.body = {
          code: 200,
          message: isMatch
        }
      }).catch(error => {
        //出现异常，返回异常
        console.log(error)
        ctx.body = {
          code: 500,
          message: error
        }
      })
    } else {
      ctx.body = {
        code: 200,
        message: '用户名不存在'
      }
    }
  }).catch(error => {
    console.log(error)
    ctx.body = {
      code: 500,
      message: error
    }
  })

})

module.exports = router